/* 为 counter 添加 set 和 decrease 方法

修改 makeCounter() 代码，使得 counter 可以进行减一和设置值的操作：

counter() 应该返回下一个数字（与之前的逻辑相同）。
counter.set(value) 应该将 count 设置为 value。
counter.decrease(value) 应该把 count 减 1。
查看沙箱中的代码获取完整使用示例。

P.S. 你可以使用闭包或者函数属性来保持当前的计数，或者两种都写 */

// 函数属性
/*
function makeCounter() {
  function counter() {
    return counter.count++;
  }

  counter.count = 0;

  counter.set = function (value) {
    counter.count = value;
  };

  counter.decrease = function () {
    counter.count--;
  };

  return counter;
}

let counter = makeCounter();

console.log(counter()); // 0
console.log(counter()); // 1

counter.count = 10;

console.log(counter()); // 10
console.log(counter()); // 11

counter.decrease();

console.log(counter()); // 11

counter.set(5);

console.log(counter()); // 5
*/

// 闭包
function makeCounter() {
  let count = 0;

  function counter() {
    return count++;
  }

  counter.set = function (value) {
    count = value;
  };

  counter.decrease = function () {
    count--;
  };

  return counter;
}

let counter = makeCounter();

console.log(counter()); // 0
console.log(counter()); // 1

counter.decrease();

console.log(counter()); // 1

counter.set(5);

console.log(counter()); // 5
